/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.losalpes.marketplace.pical.entities;

import co.com.losalpes.marketplace.pical.bos.CalificacionBO;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author marketplace
 */
@SuppressWarnings({"serial", "unused", "unchecked"})
@Entity
@NamedQueries({
@NamedQuery(name = "getAllCalificaciones", query = "SELECT c FROM Calificacion c "),
@NamedQuery (name = "getCalificacionesByestadoNitComercio", query = "SELECT c FROM Calificacion c WHERE c.estado = :estado AND c.nit_comercio = :nit" ),
@NamedQuery (name = "getCalificacionesByestadoNitFabricante", query = "SELECT c FROM Calificacion c WHERE c.estado = :estado AND c.nit_fabricante = :nit"),
@NamedQuery(name ="getBynumero", query ="Select c from Calificacion c where numero = :numero ")})
public class Calificacion implements Serializable {

    /**
     * Ni el comercio ni el fabricante han calificado
     */
    public static final String E_PENDIENTE = "PENDIENTE";
    /**
     * Todas las calificaciones posibles fueron realizadas
     */
    public static final String E_TERMINADA = "TERMINADA";
    public static final String T_RFQ = "RFQ";
    public static final String T_RFB = "RFB";
    private static final long serialVersionUID = 1L;
    @Id
    private String numero;
    @Column
    private String numeroSeguimientoPO;
    @Column
    private String nit_comercio;
    @Column
    private String nit_fabricante;
    @Column
    private String user_comercio;
    @Column
    private String user_fabricante;
    @Column
    private int cal_comercio;
    @Column
    private int cal_fabricante;
    @Column
    private int cal_producto;
    @Column
    private String com_comercio;
    @Column
    private String com_fabricante;
    @Column
    private String com_producto;
    @Column
    private String tipo_transaccion;

    @Column
    private String estado;
    
    @Temporal(TemporalType.DATE)
    @Column
    private Date fecha_limite_respuesta;
    
    public Calificacion() {
    }

    /**
     * Constructor basico crea una calificacion pendiente
     *
     * @param id
     * @param idPO
     * @param nit_comercio
     * @param nit_fabricante
     * @param user_comercio
     * @param user_fabricante
     * @param tipo_transaccion
     * @param estado
     */
    public Calificacion(String numero, String idPO, String nit_comercio, String nit_fabricante, String user_comercio, String user_fabricante, String tipo_transaccion, String estado) {
        this.numero = numero;
        this.numeroSeguimientoPO = idPO;
        this.nit_comercio = nit_comercio;
        this.nit_fabricante = nit_fabricante;
        this.user_comercio = user_comercio;
        this.user_fabricante = user_fabricante;
        this.tipo_transaccion = tipo_transaccion;
        this.estado = estado;
    }

    /**
     * BO Constructor
     */
    public Calificacion(CalificacionBO cBo) {
        this.cal_comercio = cBo.getCal_comercio();
        this.cal_fabricante = cBo.getCal_fabricante();
        this.cal_producto = cBo.getCal_producto();
        this.com_comercio = cBo.getCom_comercio();
        this.com_fabricante = cBo.getCom_fabricante();
        this.com_producto = cBo.getCom_producto();
        this.estado = cBo.getEstado();
        this.numero = cBo.getNumero();
        this.numeroSeguimientoPO = cBo.getIdPO();
        this.nit_comercio = cBo.getNit_comercio();
        this.nit_fabricante = cBo.getCom_fabricante();
        this.tipo_transaccion = cBo.getTipo_transaccion();
        this.user_comercio = cBo.getUser_comercio();
        this.user_fabricante = cBo.getUser_fabricante();
        this.fecha_limite_respuesta = cBo.getFecha_limite_respuesta();
    }

    /**
     * Converts the current entity to its BO
     *
     * @param Integer gets the bo tree in depth
     */
    public CalificacionBO toBO() {
        CalificacionBO cBo = new CalificacionBO();
        cBo.setCal_comercio(cal_comercio);
        cBo.setCal_fabricante(cal_fabricante);
        cBo.setCal_producto(cal_producto);
        cBo.setCom_comercio(com_comercio);
        cBo.setCom_fabricante(com_fabricante);
        cBo.setCom_producto(com_producto);
        cBo.setEstado(estado);
        cBo.setNumero(numero);
        cBo.setIdPO(numeroSeguimientoPO);
        cBo.setNit_comercio(nit_comercio);
        cBo.setNit_fabricante(nit_fabricante);
        cBo.setTipo_transaccion(tipo_transaccion);
        cBo.setUser_comercio(user_comercio);
        cBo.setUser_fabricante(user_fabricante);
        cBo.setFecha_limite_respuesta(fecha_limite_respuesta);
        
        return cBo;
    }
    
    public String getNumero() {
        return numero;
    }
    
    public void setNumero(String numero) {
        this.numero = numero;
    }
    
    public String getNumeroSeguimientoPO() {
        return numeroSeguimientoPO;
    }
    
    public void setNumeroSeguimientoPO(String idPO) {
        this.numeroSeguimientoPO = idPO;
    }
    
    public String getNit_comercio() {
        return nit_comercio;
    }
    
    public void setNit_comercio(String nit_comercio) {
        this.nit_comercio = nit_comercio;
    }
    
    public String getNit_fabricante() {
        return nit_fabricante;
    }
    
    public void setNit_fabricante(String nit_fabricante) {
        this.nit_fabricante = nit_fabricante;
    }
    
    public String getUser_comercio() {
        return user_comercio;
    }
    
    public void setUser_comercio(String user_comercio) {
        this.user_comercio = user_comercio;
    }
    
    public String getUser_fabricante() {
        return user_fabricante;
    }
    
    public void setUser_fabricante(String user_fabricante) {
        this.user_fabricante = user_fabricante;
    }
    
    public int getCal_comercio() {
        return cal_comercio;
    }
    
    public void setCal_comercio(int cal_comercio) {
        this.cal_comercio = cal_comercio;
    }
    
    public int getCal_fabricante() {
        return cal_fabricante;
    }
    
    public void setCal_fabricante(int cal_fabricante) {
        this.cal_fabricante = cal_fabricante;
    }
    
    public int getCal_producto() {
        return cal_producto;
    }
    
    public void setCal_producto(int cal_producto) {
        this.cal_producto = cal_producto;
    }
    
    public String getCom_comercio() {
        return com_comercio;
    }
    
    public void setCom_comercio(String com_comercio) {
        this.com_comercio = com_comercio;
    }
    
    public String getCom_fabricante() {
        return com_fabricante;
    }
    
    public void setCom_fabricante(String com_fabricante) {
        this.com_fabricante = com_fabricante;
    }
    
    public String getCom_producto() {
        return com_producto;
    }
    
    public void setCom_producto(String com_producto) {
        this.com_producto = com_producto;
    }
    
    public String getTipo_transaccion() {
        return tipo_transaccion;
    }
    
    public void setTipo_transaccion(String tipo_transaccion) {
        this.tipo_transaccion = tipo_transaccion;
    }
    
    public String getEstado() {
        return estado;
    }
    
    public void setEstado(String estado) {
        this.estado = estado;
    }
    
    public Date getFecha_limite_respuesta() {
        return fecha_limite_respuesta;
    }
    
    public void setFecha_limite_respuesta(Date fecha_limite_respuesta) {
        this.fecha_limite_respuesta = fecha_limite_respuesta;
    }
}
